package eth

import "net"

// Eth 结构体用于封装网卡信息和错误信息。
// 它包含两个字段：网卡信息列表和错误信息。
type Eth struct {
	Info  []Info `json:"info"`  // Info 字段是一个 Info 类型的切片，用于存储网卡信息列表。
	Err   error  `json:"err"`   // Err 字段用于存储在获取网卡信息过程中可能发生的错误。
	Debug bool   `json:"debug"` // Debug 字段用于控制是否输出调试信息。
}
type IpInfo struct {
	Ip      net.IP `json:"ip"`      // 网卡ip,例如 192.168.1.1
	Mask    net.IP `json:"mask"`    // 网卡掩码,例如 255.255.255.0
	MaskInt int    `json:"maskInt"` // 网卡掩码,例如 24
	Gw      net.IP `json:"gw"`      // 网关, 例如 192.168.1.1
}
type Ip6Info struct {
	Ip      net.IP `json:"ip"`      // IPv6地址，例如 2001:db8::1
	Mask    net.IP `json:"mask"`    // IPv6掩码，例如 ffff:ffff:ffff:ffff::
	MaskInt int    `json:"maskInt"` // 掩码长度，例如 64
	ScopeId int    `json:"scopeId"` // IPv6作用域ID
	Gw      net.IP `json:"gw"`      // IPv6网关
}
type Info struct {
	Name    string    `json:"name" `   // 网卡名称,例如 eth0
	Mac     string    `json:"mac"`     // 网卡mac,例如 00:00:00:00:00:00
	Ip      []IpInfo  `json:"ip"`      // 网卡ip列表, 例如 ["192.168.1.1"]
	Ip6Info []Ip6Info `json:"ip6Info"` // IPv6基础信息
	Sub     net.IP    `json:"sub"`     // 网段, 例如 192.168.1.0
	Mask    net.IP    `json:"mask"`    // 网卡掩码, 例如 255.255.255.0
	DnsList []net.IP  `json:"dnsList"` // DNS列表
	Version int       `json:"version"` // IP版本, 例如 4
}
